// Package stock
// @Title stockin[简述该包的主要作用]
// @Description
// @Author  cnHuaShao
// @since v0.0.1
// @Version v1.0.0
// @Date 2024/5/24 16:30
// @Update 2024/5/24 16:30
package stock

import (
	"time"
)

// StockIn
// @Description: 入库记录信息
type StockIn struct {
	StockInID         int             `gorm:"column:stock_in_id; primary_key" json:"stockInId"`   // 入库编号
	BatchNumber       string          `gorm:"column:batch_number; not null" json:"batchNumber"`   // 入库批次号
	StockInDate       int64           `gorm:"column:stock_in_date; not null" json:"stockInDate"`  // 入库时间
	SourceDescription string          `gorm:"column:source_description" json:"sourceDescription"` // 货物来源描述
	Operator          string          `gorm:"column:operator; not null" json:"operator"`          // 入库操作人
	StockInDetailList []StockInDetail `gorm:"foreignKey:stock_in_id;" json:"list"`                // 入库明细列表
}

func (StockIn) TableName() string {
	return "stock_in"
}

// StockInDetail
// @Description: 入库明细结构体
type StockInDetail struct {
	DetailID         int     `gorm:"column:detail_id; primary_key" json:"detailId"`     // 入库明细编号
	StockInID        int     `gorm:"column:stock_in_id; index" json:"stockInId"`        // 入库编号
	TypeID           int     `gorm:"column:type_id; index" json:"typeId"`               // 类型编号
	Price            float64 `gorm:"column:price; not null" json:"price"`               // 单价
	Quantity         int     `gorm:"column:quantity; not null" json:"quantity"`         // 数量
	TotalPrice       float64 `gorm:"column:total_price; not null" json:"totalPrice"`    // 自动计算的总价格
	ActualTotalPrice float64 `gorm:"column:actual_total_price" json:"actualTotalPrice"` // 实际总价格
	Remarks          string  `gorm:"column:remarks" json:"remarks"`                     // 备注
	Status           int     `gorm:"column:status" json:"status"`                       // 入库状态，0是已删除，1是正常
}

func (StockInDetail) TableName() string {
	return "stock_in_detail"
}

// StockOut
// @Description: 出库记录结构体
type StockOut struct {
	StockOutID         int              `gorm:"column:stock_out_id; primary_key" json:"stockOutId"`        // 出库编号
	OutType            string           `gorm:"column:out_type; not null" json:"outType"`                  // 出库类型，1'销售出库',2'退货出库',3'换货出库'
	StockOutDate       time.Time        `gorm:"column:stock_out_date; not null" json:"stockOutDate"`       // 出库时间
	Description        string           `gorm:"column:description" json:"description"`                     // 出库描述
	Destination        string           `gorm:"column:destination" json:"destination"`                     // 出库目的
	Operator           string           `gorm:"column:operator" json:"operator"`                           // 出库操作人
	StockOutDetailList []StockOutDetail `gorm:"foreignKey:StockOutDetail;references:DetailID" json:"list"` // 出库明细列表
}

func (StockOut) TableName() string {
	return "stock_out"
}

// StockOutDetail
// @Description: 出库明细结构体
type StockOutDetail struct {
	DetailID   int    `gorm:"column:detail_id; primary_key" json:"detailId"` // 出库明细编号
	StockOutID int    `gorm:"column:stock_out_id" json:"stockOutId"`         // 出库记录编号
	TypeID     int    `gorm:"column:type_id" json:"typeId"`                  // 类型编号
	Quantity   int    `gorm:"column:quantity" json:"quantity"`               // 出库数量
	Remarks    string `gorm:"column:remarks" json:"remarks"`                 // 备注
}

func (StockOutDetail) TableName() string {
	return "stock_out_detail"
}
